비전공자도 이해할 수 있는 AWS 중급실전 (보안, 가용성편)

VPC, NAT 게이트웨이, 인터넷 게이트웨이, 서브넷, 라우팅 테이블, 베스천 호스트의 개념에 대한 정리 포스트

24
단어: 1,503
게시글 썸네일
정보

인프런 - 비전공자도 이해할 수 있는 AWS 중급실전 (보안, 가용성편) 강의 내용 정리 포스트에요.
이 링크를 통해 구매하시면 제가 수익을 받을 수 있어요. 🤗

🏠 VPC

[01-vpc]

01-vpc

VPC(Virtual Private Cloud)란 가상의 네트워크 공간(컴퓨터들끼리 서로 통신하는 공간)을 의미해요.
( AWS에서 기본 VPC를 제공해주기 때문에 직접 만들지 않고도 사용할 수 있어서 인지하지 못했을 거예요. )

0️⃣ VPC의 핵심 개념

VPC를 통해 IP 주소 범위, 서브넷, 라우팅 테이블, 게이트웨이 등을 직접 설정하여 네트워크를 완전히 제어할 수 있어요.
이를 통해 클라우드 환경에서도 온프레미스와 같은 수준의 네트워크 보안과 격리를 구현할 수 있어요.
VPC는 다른 VPC와 완전히 분리되어 있어 보안성이 높아요.

1️⃣ CIDR 블록 설정

정보

계산 방법에 대한 설명 필요 시 검색으로 찾아보시면 돼요. ( 계산 사이트 )

CIDR을 쉽게 설명하면 VPC에 할당되는 IP 주소 범위를 결정하는 방법을 의미해요.
예를 들어 10.10.0.0/30과 같이 설정하면 해당 IP 범위 내에서 서브넷을 나누어 사용할 수 있어요.
CIDR 블록 설정 시 향후 확장을 고려하여 충분한 IP 주소 공간을 확보하는 것이 중요해요.
( 만약 10.10.0.0/30과 같이 설정하면 10.10.0.0 ~ 10.10.0.3까지의 IP 주소 범위를 가질 수 있어요. )

2️⃣ 사설 IP와 공인 IP

  • 공인 IP: 인터넷에서 사용되는 IP 주소 ( 사설 IP가 아닌 IP 주소 )
  • 사설 IP: 특정 VPC 내에서만 사용되는 IP 주소
    ( 10.0.0.0 ~ 10.255.255.255, 172.16.0.0 ~ 172.31.255.255, 192.168.0.0 ~ 192.168.255.255 )

특정 EC2공인 IP 주소132.0.0.0사설 IP 주소10.0.0.0라면 외부에서는 132.0.0.0으로만 접근이 가능하고, 같은 VPC 내부에서는 132.0.0.010.0.0.0 둘 다 접근이 가능해요.

( 네이버에 내 IP 주소라고 검색했을 때 나오는 주소는 공인 IP 주소에요. )

3️⃣ AWS에서 VPC 생성하기

정보

10.0.0.0/24라고 설정하면 10.0.0.0 ~ 10.0.0.255까지의 IP 주소 범위를 가질 수 있어요.

[02-vpc_생성]

02-vpc_생성

🗂️ 서브넷

[03-서브넷]

03-서브넷

서브넷(Subnet)은 VPC 내에서 IP 주소 범위를 나누어 생성된 네트워크 세그먼트예요.
각 서브넷은 특정 가용 영역(AZ)에 속하며, 용도에 따라 퍼블릭과 프라이빗으로 구분해요.

0️⃣ 서브넷의 종류

  • 퍼블릭 서브넷: (외부 통신 가능) 인터넷 게이트웨이를 통해 인터넷과 통신할 수 있는 서브넷이에요
  • 프라이빗 서브넷: (외부 통신 불가능) 인터넷과 직접 통신할 수 없으며, NAT 게이트웨이를 통해 아웃바운드 트래픽만 허용되는 서브넷이에요

1️⃣ 퍼블릭 서브넷

퍼블릭 서브넷은 인터넷 게이트웨이를 통해 인터넷에 직접 접근할 수 있는 서브넷이에요.
주로 웹 서버, 로드 밸런서, NAT 게이트웨이 등을 배치해요.
퍼블릭 서브넷의 인스턴스는 퍼블릭 IP 주소탄력적 IP 주소를 가져야 인터넷과 통신할 수 있어요.

2️⃣ 프라이빗 서브넷

프라이빗 서브넷은 인터넷에 직접 접근할 수 없는 서브넷이에요.
데이터베이스, 애플리케이션 서버 등 보안이 중요한 리소스들을 배치해요.
NAT 게이트웨이를 통해서만 인터넷으로 아웃바운드 연결이 가능해요.

3️⃣ AWS에서 서브넷 생성하기

정보

10.0.1.0/24라고 설정하면 10.0.1.0 ~ 10.0.1.255까지의 IP 주소 범위를 가질 수 있어요.

[04-서브넷_생성]

04-서브넷_생성

4️⃣ AWS에서 VPC와 서브넷 사용하기

정보

기본적으로 디폴트 VPC가 선택되어 있는데 편집을 통해서 아까 생성한 VPC를 선택하면 직접 만든 서브넷도 선택할 수 있어요.

[05-서브넷_사용]

05-서브넷_사용

🌐 인터넷 게이트웨이

[06-인터넷_게이트웨이]

06-인터넷_게이트웨이

인터넷 게이트웨이(Internet Gateway)는 VPC와 인터넷 간의 통신을 가능하게 해주는 구성 요소예요.
퍼블릭 서브넷의 리소스가 인터넷과 통신할 수 있도록 해주는 핵심 구성 요소죠.

0️⃣ 인터넷 게이트웨이의 역할

인터넷 게이트웨이를 통해 퍼블릭 서브넷에 있는 EC2 인스턴스들이 인터넷에 직접 접근할 수 있어요.
하나의 VPC에는 하나의 인터넷 게이트웨이만 연결할 수 있다는 점이 중요해요.

  • 양방향 통신 지원: VPC 내의 퍼블릭 서브넷에 있는 리소스가 인터넷과 양방향으로 통신할 수 있도록 해줘요
  • 고가용성 및 확장성: AWS에서 관리되며, 자동으로 확장되어 대역폭 제한이 없어요

1️⃣ 인터넷 게이트웨이 설정 방법

  1. 인터넷 게이트웨이 생성: AWS 콘솔에서 인터넷 게이트웨이를 생성해요
  2. VPC에 연결: 생성한 인터넷 게이트웨이를 해당 VPC에 연결해요
  3. 라우팅 테이블 업데이트: 퍼블릭 서브넷의 라우팅 테이블에 인터넷 게이트웨이로의 경로를 추가해요
  4. 보안 그룹 및 네트워크 ACL 설정: 인스턴스의 보안 그룹과 네트워크 ACL에서 인바운드 및 아웃바운드 트래픽을 허용하도록 설정해요

2️⃣ 양방향 통신 지원

인터넷 게이트웨이는 아웃바운드(나가는)와 인바운드(들어오는) 트래픽을 모두 지원해요.
이를 통해 웹 서버나 API 서버 같은 공개적으로 접근 가능한 서비스를 운영할 수 있어요.
퍼블릭 IP 주소나 탄력적 IP 주소를 가진 인스턴스만 인터넷 게이트웨이를 통해 인터넷과 통신할 수 있어요.

3️⃣ 인터넷 게이트웨이 생성 및 VPC 연결 과정

[07-인터넷_게이트웨이_생성]

07-인터넷_게이트웨이_생성

[08-인터넷_게이트웨이_VPC_연결]

08-인터넷_게이트웨이_VPC_연결

🛤️ 라우팅 테이블

[09-라우팅_테이블]

09-라우팅_테이블

라우팅 테이블(Routing Table)은 네트워크 트래픽의 경로를 정의하는 테이블예요.
VPC 내에서 트래픽의 흐름을 제어하는 핵심 구성 요소죠.

0️⃣ 라우팅 테이블의 역할

  • 트래픽 경로 지정: 서브넷에서 나가는 트래픽이 어떤 경로로 전달될지 결정해요
  • 다양한 대상 지정: 인터넷 게이트웨이, NAT 게이트웨이, 다른 서브넷 등 다양한 대상을 지정할 수 있어요
    각 라우팅 테이블은 목적지(Destination)와 대상(Target)의 쌍으로 구성된 라우팅 규칙들을 포함해요.
    예를 들어, 0.0.0.0/0(모든 인터넷 트래픽)을 인터넷 게이트웨이로 라우팅하는 규칙이 있어요.

1️⃣ 라우팅 테이블 생성 및 서브넷 연결

[10-라우팅_테이블_생성]

10-라우팅_테이블_생성

[11-라우팅_테이블_서브넷_연결]

11-라우팅_테이블_서브넷_연결

2️⃣ 라우팅 테이블 편집 인터넷 게이트웨이 설정

정보

라우팅 테이블의 설정이 상충하는 경우에는 더 구체적인 설정이 우선 적용

  1. 0.0.0.0/0 → internet-gateway: 모든 IPv4 트래픽을 보내는 경우 인터넷 게이트웨이로 보내는 설정
  2. 10.0.0.0/16 → local: 특정 IP 주소 범위를 보내는 경우 VPC 내부(로컬)로 보내는 설정

[12-라우팅_테이블_편집_인터넷_게이트웨이_설정]

12-라우팅_테이블_편집_인터넷_게이트웨이_설정

🔄 NAT 게이트웨이

[14-NAT_게이트웨이_위치]

14-NAT_게이트웨이_위치

NAT 게이트웨이(Network Address Translation Gateway)는 프라이빗 서브넷의 인스턴스가 인터넷에 아웃바운드 트래픽을 보낼 수 있도록 하면서, 외부에서의 인바운드 트래픽은 차단하는 역할을 해요.
즉 외부에서는 내부로 접근할 수 없지만, 내부에서 외부로의 접근은 가능하게 해주는 출입구에요.

NAT 게이트웨이퍼블릭 서브넷에 위치하며, 프라이빗 서브넷의 인스턴스가 인터넷에 접속할 수 있도록 해줘요.
( 프라이빗 서브넷퍼블릭 서브넷NAT 게이트웨이인터넷 게이트웨이 )

정보

라우팅 테이블의 설정이 상충하는 경우에는 더 구체적인 설정이 우선 적용

  1. 0.0.0.0/0 → nat-gateway: 모든 IPv4 트래픽을 보내는 경우 NAT 게이트웨이로 보내는 설정
  2. 10.0.0.0/16 → local: 특정 IP 주소 범위를 보내는 경우 VPC 내부(로컬)로 보내는 설정

[18-라우팅_테이블_편집_인터넷_게이트웨이_설정]

18-라우팅_테이블_편집_인터넷_게이트웨이_설정

0️⃣ NAT 게이트웨이의 역할

  • 아웃바운드 인터넷 접속 지원: 프라이빗 서브넷의 인스턴스가 인터넷으로 나가는 트래픽을 허용해요
  • 인바운드 트래픽 차단: 외부에서 프라이빗 서브넷의 인스턴스로의 직접적인 접속은 차단해요
    프라이빗 서브넷의 인스턴스들이 소프트웨어 업데이트, 패키지 다운로드, 외부 API 호출 등을 할 수 있지만, 외부에서 직접 접근할 수는 없게 해줘요.
    이는 보안상 매우 중요한 기능이에요.

1️⃣ NAT 게이트웨이의 종류

  • 퍼블릭 NAT 게이트웨이: 퍼블릭 서브넷에 위치하며, 프라이빗 서브넷의 인스턴스가 인터넷에 접속할 수 있도록 해줘요
  • 프라이빗 NAT 게이트웨이: 프라이빗 서브넷에 위치하며, 다른 VPC나 온프레미스 네트워크와의 통신을 지원해요
    일반적으로 퍼블릭 NAT 게이트웨이를 많이 사용해요.

2️⃣ NAT 게이트웨이 생성 및 퍼블릭 서브넷 배치

정보

퍼블릭 서브넷 위치에 NAT 게이트웨이 생성해야 하는 것을 인지해야 해요.

[15-NAT_게이트웨이_생성]

15-NAT_게이트웨이_생성

[16-프라이빗_라우팅_테이블_생성]

16-프라이빗_라우팅_테이블_생성

[17-프라이빗_라우팅_테이블_서브넷_연결]

17-프라이빗_라우팅_테이블_서브넷_연결

🛡️ 베스천 호스트

베스천 호스트(Bastion Host)는 외부에서 프라이빗 서브넷의 인스턴스에 안전하게 접속하기 위한 중간 서버예요.
마치 성의 출입문 같은 역할을 한다고 생각하시면 돼요.

0️⃣ 베스천 호스트의 역할

  • 보안 강화: 프라이빗 서브넷의 인스턴스에 직접 접근하지 않고, 베스천 호스트를 통해서만 접근함으로써 보안을 강화해요
  • 접근 제어: 베스천 호스트에 대한 접근을 제한하여, 특정 IP 주소나 사용자만 접근할 수 있도록 설정할 수 있어요
    외부에서 프라이빗 서브넷의 서버들에 직접 접근할 수 없으므로, 퍼블릭 서브넷에 위치한 베스천 호스트를 경유하여 접근해요.
    이를 통해 보안을 강화하면서도 필요한 관리 작업을 수행할 수 있어요.

3️⃣ 베스천 호스트 접근 흐름

  1. 외부 → 베스천 호스트: 관리자가 인터넷을 통해 베스천 호스트에 SSH 접속
  2. 베스천 호스트 → 프라이빗 서버: 베스천 호스트에서 프라이빗 서브넷의 서버로 SSH 접속
  3. 관리 작업 수행: 프라이빗 서버에서 필요한 관리 작업 실행
    이러한 접근 방식을 통해 프라이빗 서브넷의 보안을 유지하면서도 필요한 관리 작업을 안전하게 수행할 수 있어요.
유용한 팁

외부에서 베스천 호스트로 .pem 파일 전달하는 방법

# 키 페어 파일 보안을 위한 권한 설정 $ chmod 400 "web-server.pem" $ ssh -i "web-server.pem" ubuntu@[EC2 인스턴스의 Public IP] # scp -i [EC2 접근을 위한 키 페어 파일] [전송할 파일명] [서버 username]@[EC2 인스턴스의 Public IP]:[전송 받을 파일 위치] $ scp -i web-server.pem instagram-server.pem ubuntu@[EC2 인스턴스의 Public IP]:~/

⚡ 가용성

가용성(Availability)이란 시스템이 서비스를 정상적으로 제공할 수 있는 가능성을 의미해요.

0️⃣ 시스템 이중화

시스템 이중화라는 건 시스템의 일부분을 사용할 수 없게 되어도 다른 시스템을 이용하여 서비스를 계속 이용할 수 있게 만드는 걸 의미해요.

1️⃣ 가용 영역

가용 영역(Availability Zone)이란 하나의 리전 내에 여러 개의 데이터 센터가 있어요.
각 가용 영역은 독립적인 전원과 네트워크를 가지고 있어요.
가용 영역은 데이터 센터 하나를 의미해요.

🔒 보안 그룹

0️⃣ 보안 그룹의 역할

보안 그룹은 인스턴스에 대한 인바운드와 아웃바운드 트래픽을 제어하는 가상 방화벽이에요.
보안 그룹은 인스턴스의 보안을 유지하면서도 필요한 트래픽을 허용해요.

1️⃣ 인바운드와 아웃바운드 트래픽

  • 인바운드 트래픽: 외부에서 인스턴스로 들어오는 트래픽
  • 아웃바운드 트래픽: 인스턴스에서 외부로 나가는 트래픽

🎉 마무리

이 강의는 강의시간 대비해서 가격이 비싸서 구매하기전에 고민을 많이 했어요.
일반적으로 AWS 강의는 일단 배포하는 방법을 중점으로 알려주지 VPC, 서브넷, 인터넷 게이트웨이 등 AWS에서 기본적으로 처리해주는 부분은 거의 다루지 않아요.
그래서 이 강의에 흥미가 생겼고 강의 평가가 좋아보여서 구매했는데 만족스럽게 들었어요.

가장 만족스러웠던점은 탄탄한 강의자료와 실습할 수 있는 커리큘럼인 것 같아요.
사실 실제로 해보지 않으면 그 순간만 기억하게 되는거고, 다른 강의들은 직접 생각해서 실습해야하는데 여기는 실습 방법과 답안을 제시해줘서 좋았어요.

머리속에 완벽하게 각 개념들이 자리잡지는 않았지만 이전에 만들어서 배포해봤고, 현재 수정하고 있는 사이드 프로젝트가 하나 있는데 그거를 다시 배포할때는 이 강의에서 알려준 흐름대로 배포해보려고 해요.
물론 .. 베스천 호스트, 고가용성, 시스템 이중화 등의 완전히 필수적인 기능이 아니라 보안을 위해 사용하는데 비용이 나오는 부분은 제외하려고 해요 .. 🥲
( 혹시 서비스로 수입이 생긴다면 적용할 생각은 있어요 )

💡 팁

0️⃣ EC2 호스트명 변경 방법

# 호스트명 변경 sudo vim /etc/hostname # 입력 후 저장 후 다시시작하면 적용됨 sudo reboot
연관된 포스트